Model-Driven Engineering (MDE) is the paradigm of software development that uses formal models, at different abstraction levels, to represent the system under development, and uses automated transforms to convert one model to another model or text. Model transforms are a class of applications (functions or programs) that convert a model to another model or text. A transformation is the application, or the execution, of a transform on a model instance.
A significant class of model transforms, called model-to-text transforms, generate text output (for example, code, configuration files, or HTML/JSP files) from an input model (for example, XML or UML). The inputs to the transforms are often large and complex, containing tens of thousands of elements. Therefore, faults in an input model that cause a transformation to fail by generating an incorrect output can be difficult to identify and fix.
Although model-transformation failures can be caused by faults in the transform, failures that are caused by faults in the input models also often occur. This is particularly relevant in MDE, where it is a common practice for transform users to use transforms that are not written by them, for example, using standard, built-in transforms provided by a tool.